With the advance of Internet technology, there has been rapid development in technologies for various modes of network transmission of multimedia data, such as streaming, which allows a receiving device to play the multimedia data (e.g., a video clip, an audio clip, etc.) as soon as the device receives part of the data over the network.
With current technologies, a client device (e.g., a personal computer, a mobile device such as smart phone, tablets, or any portable devices, etc.) can receive, from a data source, a stream of multimedia data (e.g., video data, audio data, etc.). The client device can then decode the multimedia data, and play the decoded data. FIG. 1 illustrates an example of transmission of a video data stream from a video data source 101 to a client device 102.
The reception, decoding, and playing of multimedia data can be performed by dedicated software application, or by a browser (with a third-party plug-in such as Adobe™ Flash Player, JavaScript version of FFmpeg, etc.) installed on the client device. Both approaches have limitations. For example, multiple versions of the dedicated software application may be needed to adapt to operate on different platforms, such as Mac™, Windows™, Linux, iOS™, Android™, and WinPhone™, depending on whether the client device is a personal computer or a smart phone. Also, there can be compatibility and performance problems with third-party plug-ins. For example, Adobe™ Flash Player is not supported by iOS™, and these plug-ins may be not optimized for operation on a mobile device, leading to excessive power consumption. Further, even if the plug-in is supported across different platforms, the browser may become the bottleneck. For example, if the browser does not support high-definition videos, or that it does not support playing of multiple video data streams (e.g., for a real-time monitoring system), the client device will not be able to provide such functionalities.
Moreover, the processing of the multimedia data typically consumes a large amount of CPU and memory resources, which makes it difficult, if not impossible, for a mobile device to support processing of high-definition videos and playing of multiple video data streams.
Therefore, there is a need for a system that allows real-time acquisition, processing, and rendering of video data at client devices associated with multiple platforms and that requires less computation and memory resources.